import com.mysql.cj.protocol.Resultset;

import javax.print.DocFlavor;
import java.sql.*;

/*
    在DML语句中使用预编译SQL
 */
public class JDBCDemo8 {
    public static void main(String[] args) {
            /*
        获取用户输入信息
     */
        UserInfo userInfo = InputUtil.getInputObject(new UserInfo(), "修改用户信息", "注册");
        try (
                //通过dbutil获取数据库连接
                Connection connection = DBUtil.getConnection();
        ) {
            try {
//                Statement stmt = connection.createStatement();
                //用户输入需要修改的信息，进行更新数据库
//                String sql = "UPDATE userinfo SET password='" + userInfo.getPassword() + "' WHERE username='" + userInfo.getUsername() + "'";
                //预编译SQL语句 将值用”？“进行占位，SQL语义定死。不需要任何拼接用户输入的信息
                String sql = "UPDATE userinfo SET password=? WHERE username=?";
                // 先将sql语句交给jdbc，让jdbc知道该sql的意图，生成执行计划，但是还无法进行执行
                PreparedStatement ps = connection.prepareStatement(sql);
                ps.setString(1, userInfo.getPassword());
                ps.setString(2, userInfo.getUsername());
//                int rs = stmt.executeUpdate(sql);
                //将两个值发送给数据库执行修改操作
                int num = ps.executeUpdate();
                if (num > 0) {
                    System.out.println("修改成功");
                } else {
                    System.out.println("修改失败");
                }
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
